package practice1_100;

public class Offer14 {
    public int cuttingRope(int n) {
        //n代表绳子的长度，n的最长的长度等于，(n-1)绳子*1，(n-2)绳子*2。。。(2)绳子*(n-2)的长度最大值
        //上面是我考虑的结果，但是事与愿违，结果不对，以为还要考虑（n-1）*1，（n-2）*2，（n-3）*3的最大数字
        if(n==2) return 1;
        int [] res=new int[n+1];
        //res[1]=1;
        res[2]=1;
        int tempMax=Integer.MIN_VALUE;
        for (int i = 3; i <=n ; i++) {
            tempMax=Integer.MIN_VALUE;
            for (int j = 2; j <=i; j++) {
                tempMax =Math.max(res[j]*(i-j),Math.max(j*(i-j),tempMax));
            }
            res[i]=tempMax;
        }
        return res[res.length-1];
    }

    public static void main(String[] args) {
        int a=new Offer14().cuttingRope(12);
        System.out.println(a);
    }
}
